The present invention relates generally to the field of computer-implemented spreadsheets, and also to the field of stream processing (“streaming”).
A computer-implemented spreadsheet is an interactive computer application program for organization and analysis of tabular data. The program operates on data represented as cells of an array, organized in rows and columns. Each cell of the array can contain either raw data or the results of formulas that automatically calculate and display a value based on the contents of other cells. The user of a spreadsheet can make changes in any cell and can immediately observe the effects on calculated values, whether in tabular or graphical form. Spreadsheets are relatively ubiquitous and are useful in a wide variety of domains. However, they are generally based on a functional programming paradigm, so cannot easily handle computations that depend on the results of historic computations, or program state.
Stream processing is a programming paradigm under which a sequence of data (a “data stream,” or, more simply, a “stream”) is processed substantially immediately as each element is received. A stream processing application applies continuous analytics (for example, analytics updated over relatively short time intervals, such as in “real-time”) to an ever-changing stream of data. Stream processing takes as input one or more streams, each of which can be thought of as an infinite sequence of tuples, performs some analysis or transformation on that data, and produces one or more output streams as a result. Special-purpose languages, such as the various flavors of Continuous Query Language (CQL), exist for writing programs that process streaming data.
A digital circuit is a computational construct that takes a set of discrete-valued inputs and transforms them into a set of discrete-valued outputs. Such a circuit may be purely combinatorial, where the output is a pure function of the present input only, or sequential, where the output depends not only on the present input but also on the history of the input. A flip-flop, or latch, is typically used as a memory element of a sequential circuit for retaining information about input history, or state. Sequential circuits may be either synchronous or asynchronous. In a synchronous circuit, the state of the circuit changes only at discrete times in response to a dedicated clock signal, while in an asynchronous one, the state of the circuit can change at any time in response to changing inputs.